package nespresso.servlets;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;

import nespresso.beans.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;



public class AdminparamServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        
        public HttpSession session;
    /**
     * Default constructor. 
     */
    public AdminparamServlet() {
       
    
    }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                /*
                 * si l'utilisateur tape l'adresse de la servlet directement dans la barre d'adresse, il est renvoy� 
                 * sur la page d'accueil !
                 */
                response.sendRedirect("nespresso.jsp");
        }

        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        @SuppressWarnings({ "rawtypes" })
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                Log log = LogFactory.getLog(AdminparamServlet.class);
                // on ouvre une session pour y mettre nos objets et pour protéger les pages
                session  = request.getSession(true);
                // on récupère les valeurs des champs du formulaire de la page de saisie des infos du compte
                request.setCharacterEncoding("UTF-8");
        request.setAttribute("LoginMessage", "");
        Enumeration params = request.getParameterNames();
        String paramName = new String(); // Variable temporaire pour la récupération
        String paramChamp = new String(); // Nom du champ à modifier
        String paramidParam = new String(); // Valeur de id du paramètre
        String paramValeur = new String(); // Valeur du champ à modifier
        boolean paramCrypt = false;
        while(params.hasMoreElements()) {
                paramName = (String)params.nextElement();
                if(!paramName.equals("id") && !paramName.equals("oper")) {
                        if(paramName.equals("cryptParam")) paramCrypt = (request.getParameter(paramName).equals("Oui")) ? true : false; 
                        else
                                if(paramName.equals("idParam")) paramidParam = request.getParameter(paramName);
                                else {
                                        paramChamp = paramName;
                                        paramValeur = request.getParameter(paramName);
                                }
                }
        }
        
                log.info("Récupération des infos du paramètre à éditer :");
                System.out.println("###################################################");
                System.out.println("idParam => "+paramidParam);
                System.out.println(paramChamp+" => "+paramValeur);
                System.out.println("cryptParam => "+String.valueOf(paramCrypt));
                System.out.println("###################################################");
        
                Base bp = new Base();
        if(paramChamp.equals("Paramètre")) bp.UpdateParamNom(paramidParam, paramValeur);
        if(paramChamp.equals("Valeur"))    bp.UpdateParamValeur(paramidParam, paramValeur, paramCrypt);
        if(paramChamp.equals("Crypt"))     bp.UpdateParamCrypt(paramidParam, (paramValeur.equals("Oui")) ? true : false);
        bp.Free();
    }
}
